Skip to content

docs(addresses): verify by block — the tx-hash path is dead - #102

Draft
gnanam1990 wants to merge 1 commit into
mainfrom
docs/verification-path
Draft

docs(addresses): verify by block — the tx-hash path is dead#102
gnanam1990 wants to merge 1 commit into
mainfrom
docs/verification-path

Conversation

@gnanam1990

@gnanam1990 gnanam1990 commented Sep 3, 2026

Copy link
Copy Markdown
Owner

Every transaction hash in docs/addresses.md returns null from the public RPC.

Checked 3 Sep 2026, before today's fork: eth_getTransactionByHash and eth_getTransactionReceipt both answer null for the deploys, the job-004 lifecycle and all three rate ticks — while eth_getBlockByNumber and eth_getLogs still serve those blocks in full. The tx-hash index is pruned. The chain is intact.

The page called the RPC "the primary verification path" precisely because ArcScan's hash lookups are broken. Both of a reader's routes were dead at once, so every cast receipt command on the page failed. A settlement proof nobody can run is not a proof — and this is the page a judge opens.

What changed

The evidence never moved. Only the way you check it.

§ Was Now
2 deployments cast receipt <hash> cast block + the existing cast code; creations emit no logs, so live runtime bytecode is the by-block proof. Gas figures move to $ARCHIVE.
3 lifecycle four cast receipt eth_getLogs per step block, filtered to JobVault
4 waterfall cast receipt eth_getLogs at 0x33212d8
5 rate ticks three cast receipt eth_getLogs filtered to FloatPool, RateChanged by topic0

The waterfall reads back exactly as §4 already claimed: pool repaid at logIndex 12 (561000), operator paid at 15 (439000). Pool first.

The hashes stay — they are the record of what happened, just not the way to check it. Where an archive endpoint exists they still resolve, so the by-hash commands are kept under $ARCHIVE rather than deleted.

Also

advanceRate now reads 7000, one tick past the table — a fourth job settled after this page was last written. Noted in §5 so the progression reads as what was proven, not as the pool's current state.

Verification

Every command in the diff was run as written before committing. The §5 tick at $B_RATE55 decodes to newRateBps 5500; the settlement block returns 16 logs with the 6-decimal surface at indexes 1, 3, 4, 8, 12, 15.

scripts/hardfork-check (#101) asserts the §4 ordering and amounts on every run.


Summary by cubic

Rewrites docs/addresses.md to verify claims by block number instead of transaction hash, because the public RPC pruned its tx-hash index and every cast receipt command on the page was returning null.

  • Replaces all cast receipt commands with cast block and eth_getLogs calls that work against the public RPC today.
  • Keeps the transaction hashes as the historical record and preserves by-hash commands under an optional $ARCHIVE endpoint.
  • Adds block-number environment variables and a note that advanceRate now reads 7000, one tick past the documented table.

Written for commit 71e364d. Summary will update on new commits.

Review in cubic

Every transaction hash on this page returns null from the public RPC. Checked
3 Sep 2026: eth_getTransactionByHash and eth_getTransactionReceipt both answer
null for the deploys, the job-004 lifecycle and all three rate ticks, while
eth_getBlockByNumber and eth_getLogs still serve those blocks in full. The
tx-hash index is pruned; the chain is intact.

The page called the RPC "the primary verification path" precisely because
ArcScan's hash lookups are broken. Both of a reader's routes were therefore
dead at once, and every `cast receipt` command here failed — a settlement proof
nobody can run is not a proof.

The evidence itself never moved. Rewrites the verification path to read by
block, which works against the public RPC today:

  §2  deployments   cast block, plus cast code as before; creations emit no
                    logs, so runtime bytecode at the address is the by-block
                    proof, and the gas figures move to the archive endpoint
  §3  lifecycle     eth_getLogs per step block, filtered to JobVault
  §4  waterfall     eth_getLogs at 0x33212d8 — the pool repaid at logIndex 12
                    (561000) before the operator at 15 (439000), the same
                    ordering and the same amounts the section already claimed
  §5  rate ticks    eth_getLogs filtered to FloatPool, RateChanged by topic0

The hashes stay. They are the record of what happened; they are no longer the
way to check it. Where an archive endpoint exists they still resolve, so the
by-hash commands are kept under $ARCHIVE rather than deleted.

Also notes that advanceRate now reads 7000, one tick past the table: a fourth
job settled after this page was last written. The progression documents what
was proven, not the pool's current state.

Every command in the diff was run as written before committing. The §5 tick at
$B_RATE55 decodes to newRateBps 5500, and the settlement block returns 16 logs
with the 6-decimal surface at indexes 1, 3, 4, 8, 12, 15.
@coderabbitai

coderabbitai Bot commented Sep 3, 2026

Copy link
Copy Markdown

Important

Draft PR not reviewed

Draft PRs are not automatically reviewed by default.

  • Trigger a manual review

To automatically review draft PRs, update your CodeRabbit configuration:

reviews:
  auto_review:
    drafts: true

Warning

Billing warning: we have not been able to collect payment for this subscription for more than 72 hours. Please update the payment method or pay any pending invoices in Billing to avoid service interruption.


Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant